package com.settlement.system.model.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.settlement.system.common.base.BaseEntity;
import com.settlement.system.common.enums.DoneAuditStatusEnum;
import com.settlement.system.common.enums.OwnerLossEnum;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * <p>
 * 个人已办或归档核销表
 * </p>
 *
 * @author huangrensen
 * @since 2023-08-30
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class SysDoneAudit extends BaseEntity {

    private static final long serialVersionUID = 1L;

    @TableId(value = "id")
    private String id;

    /**
     * 关联单号
     */
    private String linkNo;

    /**
     * 发退货时间
     */
    private LocalDateTime sendReturnTime;

    /**
     * 下单时间
     */
    private LocalDateTime orderTime;

    /**
     * 对账系统平台编码
     */
    private String secordSourceCode;

    /**
     * 对账系统平台名称
     */
    private String secordSourceName;

    /**
     * 电商平台店铺编码
     */
    private String thirdSourceCode;

    /**
     * 电商平台店铺名称
     */
    private String thirdSourceName;

    /**
     * 对账平台店铺编码
     */
    private String dzPlatformStoreCode;

    /**
     * 自有平台主订单号
     */
    private String onwerPreformNo;

    /**
     * 原始主订单号
     */
    private String sourcePreformMainNo;

    /**
     * 原始子订单号
     */
    private String sourcePreformSubNo;

    /**
     * PO单号
     */
    private String poNo;

    /**
     * 渠道编码
     */
    private String channelCode;

    /**
     * 渠道
     */
    private String channel;

    /**
     * 内部系统电商平台编码
     */
    private String innerShopCode;

    /**
     * 内部系统电商平台名称
     */
    private String innerShopName;

    /**
     * 内部系统店铺编码
     */
    private String shopCode;

    /**
     * 内部系统店铺名称
     */
    private String shopName;

    /**
     * 入账主体
     */
    private String receiveCompany;

    /**
     * 电商平台登录账号
     */
    private String shopAccount;

    /**
     * 财务系统店铺编码
     */
    private String billSysStore;

    /**
     * 财务系统店铺名称
     */
    private String billSysStoreName;

    /**
     * 商品单价
     */
    private BigDecimal price = BigDecimal.ZERO;

    /**
     * 发货数量
     */
    private Integer qty = 0;

    /**
     * 发货金额
     */
    private BigDecimal sendAmount = BigDecimal.ZERO;

    /**
     * 退货数量
     */
    private Integer returnQty = 0;

    /**
     * 退货金额
     */
    private BigDecimal returnAmount = BigDecimal.ZERO;

    /**
     * 收款日期
     */
    private LocalDateTime receiveDate;

    /**
     * 收款金额
     */
    private BigDecimal receiveAmount = BigDecimal.ZERO;

    /**
     * 退款日期
     */
    private LocalDateTime refundDate;

    /**
     * 退款金额
     */
    private BigDecimal refundAmount = BigDecimal.ZERO;

    /**
     * 保证金退款金额
     */
    private BigDecimal depositAmount = BigDecimal.ZERO;

    /**
     * 自系统调账日期
     */
    private LocalDateTime systemReconciliationDate;

    /**
     * 自系统调账数量
     */
    private Integer systemReconciliationQty = 0;

    /**
     * 自系统调账金额
     */
    private BigDecimal systemReconciliationAmount = BigDecimal.ZERO;

    /**
     * 财务调账日期
     */
    private LocalDateTime reconciliationDate;

    /**
     * 财务调账数量
     */
    private Integer reconciliationQty = 0;

    /**
     * 财务调账金额
     */
    private BigDecimal reconciliationAmount = BigDecimal.ZERO;

    /**
     * 差异数量
     */
    private Integer differenceQty = 0;

    /**
     * 应收账款余额
     */
    private BigDecimal receiveBillAmount = BigDecimal.ZERO;

    //业务日期
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime businessDate;

    /**
     * 是否核消
     */
    private String audit;

    // 编号编码
    private String ruleCode;
    // 规则名称
    private String ruleName;

    /**
     * 订单核消主类别名称
     */
    private String mainTypeName;

    /**
     * 订单核消细类名称
     */
    private String auditDetailName;

    /**
     * 异常售后未提报金额
     */
    private BigDecimal serviceBillAmount = BigDecimal.ZERO;

    /**
     * 是否推送
     */
    private String push;

    /**
     * 核消状态
     */
    private String auditStatus;

    /**
     * 单据编号
     */
    private String orderNo;

    /**
     * 操作状态（0：已办，1：归档）
     */
    private Integer status = DoneAuditStatusEnum.DONE.getValue();

    // 结算前退款
    private BigDecimal refundsBeforeCheckout = BigDecimal.ZERO;

    // 结算后退款
    private BigDecimal refundsAfterCheckout = BigDecimal.ZERO;

    /**
     * 创建人ID
     */
    private Long createBy;

    /**
     * 修改人ID
     */
    private Long updateBy;

    /**
     * 所属平台
     */
    private String platform;

    /**
     * 所属角色
     */
    private String belongRole;

    /**
     * 归档月份
     */
    private String billDate;
    /**
     * 是否自认损失
     */
    private Integer ownerLoss = OwnerLossEnum.NO.getValue();

    // 自认损失金额
    private BigDecimal ownerLossAmount = BigDecimal.ZERO;

}
